/**
 * 判断是不是纯函数
 * 副作用的理解：表示在执行一个函数时，除了返回函数值之外，还对调用函数产生了附加的影响，比如修改了全局变量，修改参数或者改变外部的存储
 */

// 案例1：是
function sum(num1, num2) {
  return num1 + num2
}

//案例2：不是
let n = 5

function add(num) {
  return n + num
}

console.log(add(5))
n = 10
console.log(add(5))

// 案例3：不是
// 修改了变量
function printInfo(info) {
  console.log(info.name, info.age)
  info.name = 'hahaha'
}

var obj = {
  name: 'lijing',
  age: 19
}
printInfo(obj) //lijing,19
printInfo(obj)//hahaha 19

// 案例4：是
function foo(info) {
  return {
    ...info,
    name: 'hahaha'
  }
}
